package com.udf.hive.udf.string;

import java.util.logging.Logger;

import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;

/**
 * 首字母大写函数
 * 
 * @作者 Administrator
 * @version [版本号, 2019年12月12日]
 */
public class FirstCharUpperCaseUDF extends UDF
{
    private static Logger logger = Logger.getLogger("FirstCharUpperCaseUDF");

    /**
     * 数据处理逻辑
     * 
     * @param str
     * @return
     */
    public Text evaluate(Text str) {
        if (str == null) {
            return null;
        }
        String value = str.toString();
        if (!"".equals(value)) {
            char[] cs = value.toCharArray();
            char first = cs[0];
            // 非小写字母不要大写转换
            if (97 <= first && first <= 122) {
                // ascii码偏移方式
                cs[0] -= 32;
                value = String.valueOf(cs);
            }
        }
        return new Text(value);
    }

    public static void main(String[] args) {
        logger.info(String.valueOf(new FirstCharUpperCaseUDF().evaluate(new Text("张三李四"))));
    }

}
